package com.hqully.smartfumehood.mapper;

import com.hqully.smartfumehood.entity.DevRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.hqully.smartfumehood.entity.dto.DevRecordDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *     针对数据库表[dev_record]的操作
 * </p>
 * @entity {@link DevRecord}
 * @author liulingyu
 * @date 2022-03-09 10:00
 * @version 1.0
 */
/**
 * <p> 
 *     针对数据库表[dev_record]的操作
 * </p>
 * @entity {@link DevRecord}
 * @author liulingyu
 * @date 2022-05-12 10:23
 * @version 1.0
 */
@Mapper
public interface DevRecordMapper extends BaseMapper<DevRecord> {


    /**
     * <p>
     *     根据[query]的参数条件查询设备使用记录
     * </p>
     * @date 2022/5/12 19:05 <br>
     * @author liulingyu <br>
     * @param query 查询参数
     * @return {@link List< DevRecordDto>} 设备使用记录列表
     */
    public List<DevRecordDto> findAllRecord(Map query);

    /**
     * <p>
     *     根据[did]查询设备使用记录
     * </p>
     * @date 2022/5/12 19:09 <br>
     * @author liulingyu <br>
     * @param did 设备ID
     * @return {@link List< DevRecord>} 设备使用记录列表
     */
    public List<DevRecord> findRecordByDid(@Param("id") String did);


    /**
     * <p>
     *     根据[did]查询最新一条设备使用记录
     * </p>
     * @deprecated 暂时没有使用到本接口
     * @date 2022/5/12 19:15 <br>
     * @author liulingyu <br>
     * @param did 设备ID
     * @return {@link DevRecord} 设备使用记录列表
     */
    public DevRecord findLatestRecordByDid(@Param("id") String did);

    /**
     * <p>
     *     根据[deviceId]查询正在使用中的正常设备记录
     * </p>
     * @date 2022/6/29 17:19 <br>
     * @author liulingyu <br>
     * @param deviceId 设备id
     * @return {@link DevRecord} 正在使用中的设备记录（没有end_time且status为1）
     */
    DevRecord findInUseByDeviceId(@Param("deviceId") String deviceId);

    /**
     * <p>
     *     添加设备使用记录
     * </p>
     * @date 2022/5/12 19:16 <br>
     * @author liulingyu <br>
     * @param record 设备使用记录实体类
     * @return {@link int}
     */
    public int addRecord(DevRecord record);

    /**
     * <p>
     *     通过[recordId]删除设备使用记录
     * </p>
     * @deprecated 本项目暂时不使用该接口
     * @date 2022/5/12 19:17 <br>
     * @author liulingyu <br>
     * @param recordId 设备使用记录ID
     * @return {@link int}
     */
    public int deleteRecord(@Param("recordId") long recordId);

    /**
     * <p>
     *     更新设备使用记录
     * </p>
     * @date 2022/5/12 19:21 <br>
     * @author liulingyu <br>
     * @param record 设备使用记录实体类
     * @return {@link int}
     */
    public int updateRecord(DevRecord record);





}
